<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="urn:P-IEEE-1671.2:2008.02:InstrumentDescription" xmlns:hc="urn:IEEE-1671:2008.01:HardwareCommon" xmlns:c="urn:IEEE-1671:2008.01:Common" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:P-IEEE-1671.2:2008.02:InstrumentDescription" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.29">
	<xs:import namespace="urn:IEEE-1671:2008.01:HardwareCommon" schemaLocation="HardwareCommon.xsd"/>
	<xs:import namespace="urn:IEEE-1671:2008.01:Common" schemaLocation="Common.xsd"/>
	<xs:element name="InstrumentDescription">
		<xs:annotation>
			<xs:documentation>Instrument Description</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="hc:HardwareItemDescription">
					<xs:sequence>
						<xs:element name="Buses" minOccurs="0">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Bus" type="Bus" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>The bus type is specified by specifying a type derivied from the "Bus" abstract type.  The schema includes derived types for common instrumentation control buses.</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="PowerOnDefaults" minOccurs="0">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Default" type="c:NamedValue" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>Keyword-value pair for identifying power-on defaults.</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="Specifications" type="hc:Specifications" minOccurs="0"/>
						<xs:element name="Resources" type="hc:Resources" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Resources are the physical entities in the instrument that provides the source and measure capabilities.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Switching" type="hc:Switching" minOccurs="0"/>
						<xs:element name="Capabilities" type="hc:Capabilities" minOccurs="0"/>
					</xs:sequence>
					<xs:attributeGroup ref="c:DocumentRootAttributes"/>
					<xs:attribute name="type" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:enumeration value="Instrument"/>
								<xs:enumeration value="Module"/>
								<xs:enumeration value="Option"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<!--Bus type is an abstract type from which specific bus types are derived.  The Instrument schema defines a number of standard instrument communication buses.-->
	<xs:complexType name="Bus" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract type for identifying the bus used to communicate with the instrument</xs:documentation>
		</xs:annotation>
		<xs:attribute name="defaultAddress" type="c:NonBlankString"/>
	</xs:complexType>
	<xs:complexType name="VXI">
		<xs:annotation>
			<xs:documentation>VXI Bus</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus">
				<xs:sequence>
					<xs:element name="DynamicCurrent" type="VXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of dynamic current in
amps consumed by the device on each of the VXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="PeakCurrent" type="VXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of peak current in amps consumed by the device on each of the VXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="ECLTrigger" type="VXITriggerLines">
						<xs:annotation>
							<xs:documentation>The number of ECL trigger lines concurrently input or sensed.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="TTLTrigger" type="VXITriggerLines">
						<xs:annotation>
							<xs:documentation>The number of TTL trigger lines concurrently input or sensed.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Keying">
						<xs:annotation>
							<xs:documentation>Identifies the keying class (1-6) defined by the VXI specification. Classes 7, 8,
and 9 are defined as follows:
Class 7 – No local bus
Class 8 – Sensor +/-16V
Class 9 – Sensor +/-42V
Top Key supports C size modules.
Bottom Key supports D size
modules (Bottom Key on C size
modules is always 7).</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:attribute name="bottomRight" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
							<xs:attribute name="bottomLeft" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
							<xs:attribute name="topRight" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
							<xs:attribute name="topLeft" use="required">
								<xs:simpleType>
									<xs:restriction base="xs:int">
										<xs:minInclusive value="1"/>
										<xs:maxInclusive value="9"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
						</xs:complexType>
					</xs:element>
					<xs:element name="ModuleCooling">
						<xs:complexType>
							<xs:attribute name="backPressure" type="xs:double" use="required">
								<xs:annotation>
									<xs:documentation>The module cooling as back pressure in mm/H2O</xs:documentation>
								</xs:annotation>
							</xs:attribute>
							<xs:attribute name="airFlow" type="xs:double" use="required">
								<xs:annotation>
									<xs:documentation>Represents Module Cooling as air flow in liters/sec.</xs:documentation>
								</xs:annotation>
							</xs:attribute>
						</xs:complexType>
					</xs:element>
					<xs:element name="SupportedClockSources" type="SupportedClockSources">
						<xs:annotation>
							<xs:documentation>Identifies the supported clock sources for the instrument.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="addressSpace" use="required">
					<xs:annotation>
						<xs:documentation>Identifies the type of VXI address space needed by the instrument or module in addition to A16.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="A16"/>
							<xs:enumeration value="A24"/>
							<xs:enumeration value="A32"/>
							<xs:enumeration value="A64"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="deviceClass" use="required">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="Message"/>
							<xs:enumeration value="Register"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="deviceCategory" type="DeviceCategory" use="required"/>
				<xs:attribute name="dynamicallyConfigured" type="xs:boolean" use="required"/>
				<xs:attribute name="interruptLines" type="xs:int" use="required">
					<xs:annotation>
						<xs:documentation>The number of interrupt lines utilized by a device.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="manufacturerID" type="c:HexValue" use="required"/>
				<xs:attribute name="modelCode" type="c:HexValue" use="required"/>
				<xs:attribute name="requiredMemory" type="c:HexValue" use="required"/>
				<xs:attribute name="slotSize" use="required">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="A"/>
							<xs:enumeration value="B"/>
							<xs:enumeration value="C"/>
							<xs:enumeration value="D"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="slotWeight" type="xs:double" use="required">
					<xs:annotation>
						<xs:documentation>The weight of the module in kilograms per slot occupied.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="slots" type="xs:int" use="required">
					<xs:annotation>
						<xs:documentation>The number of slots consumed.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="VXIBackplaneVoltages">
		<xs:annotation>
			<xs:documentation>This type is used to store the amount of current in amps consumed by the device for each of the VXI backplane voltages.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="plus_12" type="xs:double" use="required"/>
		<xs:attribute name="plus_24" type="xs:double" use="required"/>
		<xs:attribute name="plus_5_standby" type="xs:double" use="required"/>
		<xs:attribute name="plus_5" type="xs:double" use="required"/>
		<xs:attribute name="minus_12" type="xs:double" use="required"/>
		<xs:attribute name="minus_24" type="xs:double" use="required"/>
		<xs:attribute name="minus_2" type="xs:double" use="required"/>
		<xs:attribute name="minus_5.2" type="xs:double" use="required"/>
	</xs:complexType>
	<xs:complexType name="VXITriggerLines">
		<xs:annotation>
			<xs:documentation>Used to specify the number of triggers concurrently input or sensed.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="source" type="xs:int" use="optional"/>
		<xs:attribute name="sense" type="xs:int" use="optional"/>
	</xs:complexType>
	<xs:complexType name="IEEE-488">
		<xs:annotation>
			<xs:documentation>IEEE-488 bus</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="VME">
		<xs:annotation>
			<xs:documentation>VME Bus</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="Ethernet">
		<xs:annotation>
			<xs:documentation>Ethernet</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus">
				<xs:attribute name="supportsDHCP" type="xs:boolean" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="EIA-232">
		<xs:annotation>
			<xs:documentation>RS-232</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="USB">
		<xs:annotation>
			<xs:documentation>USB</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus">
				<xs:sequence>
					<xs:element name="Version" type="hc:VersionIdentifier">
						<xs:annotation>
							<xs:documentation>Used to identify the version of USB supported.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IEEE-1394">
		<xs:annotation>
			<xs:documentation>IEEE--1394</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="LXI">
		<xs:annotation>
			<xs:documentation>LXI</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Ethernet">
				<xs:attribute name="LXIVersion" type="c:NonBlankString" use="required"/>
				<xs:attribute name="class" use="required">
					<xs:simpleType>
						<xs:restriction base="c:NonBlankString">
							<xs:enumeration value="A"/>
							<xs:enumeration value="B"/>
							<xs:enumeration value="C"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PCI">
		<xs:annotation>
			<xs:documentation>PCI</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="Bus">
				<xs:attribute name="vendorID" type="c:HexValue" use="required"/>
				<xs:attribute name="deviceID" type="c:HexValue" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PCIe">
		<xs:annotation>
			<xs:documentation>PCI Express</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="PCI">
				<xs:attribute name="numberOfLanes" type="xs:int" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PXI">
		<xs:annotation>
			<xs:documentation>PXI</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="PCI">
				<xs:sequence>
					<xs:element name="DynamicCurrent" type="PXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of dynamic current in
amps consumed by the device on each of the PXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="PeakCurrent" type="PXIBackplaneVoltages">
						<xs:annotation>
							<xs:documentation>The amount of peak current in amps consumed by the device on each of the PXI backplane voltage lines.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="SupportedClockSources" type="SupportedClockSources">
						<xs:annotation>
							<xs:documentation>Identifies the supported clock sources for the instrument.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="deviceCategory" type="DeviceCategory" use="required"/>
				<xs:attribute name="slots" type="xs:int" use="required">
					<xs:annotation>
						<xs:documentation>The number of PXI slots provided or consumed by this device.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="slotSize" use="required">
					<xs:annotation>
						<xs:documentation>A string specifying which of the defined sizes this PXI component supports. The string shall be one of the following: 3U, 6U.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="3U"/>
							<xs:enumeration value="6U"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="slotWeigth" type="xs:double" use="required">
					<xs:annotation>
						<xs:documentation>For a PXI module, this is a negative floating point number representing the weight of the module in kilogram per slot occupied.
For a PXI mainframe, this is a positive floating point number representing the weight of the mainframe in kilogram per slot provided.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="memorySize" type="xs:int" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PXIBackplaneVoltages">
		<xs:annotation>
			<xs:documentation>This type is used to store the amount of current in amps consumed by the device</xs:documentation>
		</xs:annotation>
		<xs:attribute name="plus_5" type="xs:double" use="required"/>
		<xs:attribute name="plus_3.3" type="xs:double" use="required"/>
		<xs:attribute name="plus_12" type="xs:double" use="required"/>
		<xs:attribute name="minus_12" type="xs:double" use="required"/>
	</xs:complexType>
	<xs:complexType name="PXIe">
		<xs:annotation>
			<xs:documentation>PXI Express</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="PXI">
				<xs:attribute name="numberOfLanes" type="xs:int" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:simpleType name="DeviceCategory">
		<xs:annotation>
			<xs:documentation>PXI and VXI device categories</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="InstrumentModule"/>
			<xs:enumeration value="Slot0Device"/>
			<xs:enumeration value="Mainframe"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="SupportedClockSources">
		<xs:attribute name="internal" type="xs:boolean" use="required"/>
		<xs:attribute name="external" type="xs:boolean" use="required"/>
		<xs:attribute name="backplane" type="xs:boolean" use="required"/>
	</xs:complexType>
</xs:schema>
